In the context of memory systems, defragmentation refers to a process that reduces the amount of fragmentation in memory. Part of this process includes creating larger regions of free space using compaction to impede the return of fragmentation.
Existing memory compaction algorithms work independently from application logic. These compaction algorithms rely on information about an application object's lifetime that the algorithms are able to obtain from the memory manager. In these cases, the determination of when memory compacting should be performed is an estimate.
Additionally, because memory compacting code algorithms cannot predict the future use of an object, the algorithms must block access to that object whose memory is being compacted. In other words, typically, there is no way to avoid memory compacting interference with application flow, thereby resulting in significant performance degradation during the compaction.
There is thus a need for addressing these and/or other issues associated with the prior art.